logic puzzles in discrete math